package com.open.capacity.user.dao;

import com.open.capacity.common.model.Notice;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface NoticeDao {

    /**
     * 获取自己发布的通知
     * @param map
     * @return
     */
    List<Notice> getSelfPublishNotice(Map map);

    /**
     * 获取自己所收到的通知
     */
    List<Notice> getReceivedNotice(String username);

    /**
     * 获取自己的未读通知
     */
    List<Notice> getNoReadNotice(Long userId);

    /**
     * 获取未读通知数
     * @return
     */
    long getNoReadNoticeCount(Long userId);
    /**
     * 获取自己所收到的通知并标记未读通知,并根据未读且时间最近的优先排序
     */
    List<Notice> getReceivedAndMarkNoReadNotice(Map map);

    Integer UserIsReadNotice(@Param("id") Integer id, @Param("userId") Long userId);
    /**
     * 阅读通知
     */
    int readNotice(@Param("id") Integer id, @Param("userId") Long userId);
    /**
     * 发布通知
     * @param notice
     * @return
     */
    int publishNotice(Notice notice);

    /**
     * 修改通知
     * @param notice
     * @return
     */
    int updateNotice(Notice notice);

    /**
     * 删除通知
     * @param id
     * @return
     */
    int deleteNotice(Integer id);
}
